package com.atguigu.gmall.item.vo;

import com.atguigu.gmall.pms.entity.CategoryEntity;
import com.atguigu.gmall.pms.entity.SkuImagesEntity;
import com.atguigu.gmall.pms.vo.ItemGroupVo;
import com.atguigu.gmall.pms.vo.ItemSkuAttrsVo;
import com.atguigu.gmall.sms.vo.ItemSaleVo;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@ApiModel("商品详情页数据模型")
@Data
public class ItemVo {
//1、面包屑
    //  1、2、3级分类
    private List<CategoryEntity> categories;
//  2、品牌
//    品牌名称、品牌id
    private String brandName;
    //短的用数值，长的用串(前端超过16位长度的数字会导致精度丢失)
    private String brandId;
//  3、spu标题
    private String spuName;
//2、sku图片栏
//  1、默认图片
    private String defaultImage;
//  2、其他图片列表
    private List<SkuImagesEntity> images;
//3、sku详情
    private String spuId;
    private String skuId;
//  1、sku标题
    private String title;
//  2、sku副标题
    private String subtitle;
//  3、价格
    private BigDecimal price;
//  4、促销：  满减   满多少减多少
    //营销数据涉及到三张表的数据  所以自定义类型
    //[{id:1,type:"满减" , desc:"满3000减1000"},{id:2,type:"折扣" , desc:"满3件打1折"}]
    private List<ItemSaleVo> sales;
//  5、重量
    private Double weight;
//  6、是否有货
    private Boolean store = false;

//4、商品介绍
//            spu详情图片列表
    private List<String> spuImages;
//5、规格和包装
//            属性分组:
//    [{groupName:'主体',
//    attrValues:[{attrName:"上市日期" , attrVal:"2022-01-01"},{},{}]},{},{}]
//    分组下的spu和sku的属性+值 集合
    private List<ItemGroupVo> groups;
//  7、销售属性
//    7.1 spu的所有sku的 每个销售属性 和他值集合的集合
    //[{attrId:"3",attrName:"颜色" , attrValues:["黑色","白色"]},{}]
    private List<ItemSkuAttrsVo> skuAttrs;
//    7.2 当前sku的销售属性组合  方便页面默认选中
    // {3:"黑色" ， 4:"8G" , 5:"128G"}    key是当前sku有的销售属性的id ， 映射的是sku该属性的值
    private Map<Long,String> skuAttrValue;
//    7.3 每个sku的销售属性值列表 映射skuid 的集合
    //{"黑色,8G,128G":1 ,"白色,8G,128G":2}
    // 页面以后选中一组销售属性值时，将每个选中的值从前到后拼接成字符串 就可以到json中匹配到对应的skuId进行跳转
    private String skusAttrValuesJson;
}

